﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using ProyectoBastanteo.Dominio;
using ProyectoBastanteo.Persistencia;
namespace ProyectoBastanteo.Prueba
{
    [TestFixture]
    public class IntervencionDAOPruebas
    {
       
       IntervencionDAO IntDAO = null;

       Intervencion registro = null;
       //Cliente RegCli = null;
       //Poderes RegPod = null;

       [TestFixtureSetUp]
       public void InicializarPruebas()
       {
           IntDAO = new Persistencia.IntervencionDAO();
       }


       [Test]
       public void Test_registrarIntervencion()
       {
           Intervencion IntACrear = new Intervencion();
           Cliente RegCli = new Cliente();
           Poderes RegPod = new Poderes();

           //comando.Parameters.Add(new SqlParameter("@codclie", IntervencionACrear.codclie.codclie));
           //comando.Parameters.Add(new SqlParameter("@grubast", IntervencionACrear.grubast));
           //comando.Parameters.Add(new SqlParameter("@codpode", IntervencionACrear.codpode));
           //comando.Parameters.Add(new SqlParameter("@gruinte", IntervencionACrear.grubast));

           // validando que se cree correctamente
           RegCli.codclie = 77;
           RegPod.codpod = "p1";

           IntACrear.codclie = RegCli;
           IntACrear.codpode = RegPod;
           IntACrear.grubast = "a";
           IntACrear.gruinte = "12i1";

           //RepACrear.nudorep = "122";
           IntACrear.gruinte = null;
           
           Assert.Catch<Exception>(delegate
           {
               registro = IntDAO.Crear(IntACrear);
           });

           IntACrear.gruinte = "a";

           Assert.DoesNotThrow(delegate
           {
               registro = IntDAO.Crear(IntACrear);
           });

           Assert.IsNotNull(registro);

       }

//pruebas de obtener

       [Test]
       public void Test2_ObtenerIntervencionPorCliente()
       {
           Intervencion IntervencionObtenido = null;
           Cliente RegCli = new Cliente();
           RegCli.codclie = 77;
          
           // 1. Validar que se retorne nulo al obtener un bastanteo inexistente
           Assert.DoesNotThrow(delegate
           {
               IntervencionObtenido = IntDAO.ObtenerxCliente(RegCli);
           });

           Assert.IsNotNull(IntervencionObtenido);
           // 2. Validar que se obtenga el bastanteo creado satisfactoriamente
           Assert.DoesNotThrow(delegate
           {
               IntervencionObtenido = IntDAO.ObtenerxCliente(RegCli);
           });
           
        }

       [Test]
       public void Test3_ObtenerBastanteoIntervencion()
       {
           Intervencion IntervencionObtenido = null;
           Cliente RegCli = new Cliente();
           Poderes RedPod = new Poderes();
           RegCli.codclie = 77;


           // 1. Validar que se retorne nulo al obtener un bastanteo inexistente
           Assert.DoesNotThrow(delegate
           {
               IntervencionObtenido = IntDAO.ObtenerBastInt(RegCli.codclie, "a", "P2", "a");
           });

           Assert.IsNull(IntervencionObtenido);
           //RegPod.codpod = "p1";

           // 2. Validar que se obtenga el bastanteo creado satisfactoriamente
           Assert.DoesNotThrow(delegate
           {
               IntervencionObtenido = IntDAO.ObtenerBastInt(RegCli.codclie, "a", "p1", "a");
           });
           Assert.IsNotNull(IntervencionObtenido);

       }

       [Test]
       public void Test4_Eliminar()
       {
           Cliente RegCli = new Cliente();
           RegCli.codclie = 77;

           Poderes RegPod = new Poderes();
           RegPod.codpod = "p1";

           Intervencion IntervencionAEliminar = new Intervencion();

           IntervencionAEliminar.codclie = RegCli;
           IntervencionAEliminar.codpode = RegPod;
           IntervencionAEliminar.grubast = "a";
           IntervencionAEliminar.gruinte = "a";

           Assert.DoesNotThrow(delegate
           {
               IntDAO.Eliminar(IntervencionAEliminar);
           });

           Intervencion IntervencionEliminado = IntDAO.ObtenerxCliente(RegCli);
           Assert.IsNull(IntervencionEliminado);

       }

      

    }
}